package com.zhongli.devplatform.constant.im;

/**
 * 腾讯IM常量池
 * @author WuXiCheng
 * @version 1.0
 */
public class TencentIMConstant {

    // SDK APP ID
    public static final String SDKAPPID = "SdkAppid";
    // 回调命令
    public static final String CALLBACKCOMMAND = "CallbackCommand";
    // 消息类型 固定值 json
    public static final String CONTENTTYPE = "contenttype";
    // 客户端IP
    public static final String CLIENTIP = "ClientIP";
    // 客户端平台类型
    // RESTAPI（使用 REST API 发送请求）、Web（使用 Web SDK 发送请求）、
    // Android、iOS、Windows、Mac、Unkown（使用未知类型的设备发送请求）
    public static final String OPTPLATFORM = "OptPlatform";


    //--------------------回调类型-------------------------

    // 状态变更回调
    public static final String COMMAND_STATE_CHANGE = "State.StateChange";
    // 添加好友回调
    public static final String COMMAND_FRIEND_ADD = "Sns.CallbackFriendAdd";
    // 删除好友回调
    public static final String COMMAND_FRIEND_DEL = "Sns.CallbackFriendDelete";
    // 添加黑名单回调
    public static final String COMMAND_BLACKLIST_ADD = "Sns.CallbackBlackListAdd";
    // 删除黑名单回调
    public static final String COMMAND_BLACKLIST_DEL = "Sns.CallbackBlackListDelete";
    // 单聊消息发送之前回调
    public static final String COMMAND_C2C_BEFORE_SEND_MSG = "C2C.CallbackBeforeSendMsg";
    // 单聊消息发送之后回调
    public static final String COMMAND_C2C_AFTER_SEND_MSG = "C2C.CallbackAfterSendMsg";
    // 创建群组之前回调
    public static final String COMMAND_GROUP_BEFORE_CREATE = "Group.CallbackBeforeCreateGroup";
    // 创建群组之后回调
    public static final String COMMAND_GROUP_AFTER_CREATE = "Group.CallbackAfterCreateGroup";
    // 申请入群之前回调
    public static final String COMMAND_GROUP_BEFORE_APPLY_JOIN = "Group.CallbackBeforeApplyJoinGroup";
    // 拉人入群之前回调
    public static final String COMMAND_GROUP_BEFORE_INVITE_JOIN = "Group.CallbackBeforeInviteJoinGroup";
    // 新成员入群之后回调
    public static final String COMMAND_GROUP_AFTER_MEMBER_JOIN = "Group.CallbackAfterNewMemberJoin";
    // 群成员离开之后回调
    public static final String COMMAND_GROUP_AFTER_MEMBER_EXIT = "Group.CallbackAfterMemberExit";
    // 群内发言之前回调
    public static final String COMMAND_GROUP_BEFORE_SEND_MSG = "Group.CallbackBeforeSendMsg";
    // 群内发言之后回调
    public static final String COMMAND_GROUP_AFTER_SEND_MSG = "Group.CallbackAfterSendMsg";
    // 群组满员之后回调
    public static final String COMMAND_GROUP_AFTER_GROUP_FULL = "Group.CallbackAfterGroupFull";
    // 群组解散之后回调
    public static final String COMMAND_GROUP_AFTER_DESTROYED = "Group.CallbackAfterGroupDestroyed";
    // 群组资料修改之后回调
    public static final String COMMAND_GROUP_AFTER_INFO_CHANGED = "Group.CallbackAfterGroupInfoChanged";

    //----------------------------------------------------

    //-----------------------Message----------------------

    // 发送人
    public static final String FROM_ACCOUNT = "From_Account";
    // 接收人
    public static final String TO_ACCOUNT = "To_Account";
    // 消息序列号
    public static final String MSGSEQ = "MsgSeq";
    // 消息随机数
    public static final String MSGRANDOM = "MsgRandom";
    // 消息时间戳 秒
    public static final String MSGTIME = "MsgTime";
    // 消息唯一标识，可用于撤回消息
    public static final String MSGKEY = "MsgKey";
    // 消息体
    public static final String MSGBODY = "MsgBody";
    //----------------------------------------------------

    //----------------------MessageBody---------------------------------------------------------
    // https://cloud.tencent.com/document/product/269/2720
    // 消息类型
    // TIMTextElem(文本消息)，TIMLocationElem(位置消息)，
    // TIMFaceElem(表情消息)，TIMCustomElem(自定义消息)，
    // TIMSoundElem(语音消息)，TIMImageElem(图像消息)，
    // TIMFileElem(文件消息)，TIMVideoFileElem(视频消息)。
    public static final String BODY_MSGTYPE = "MsgType";
    //
    public static final String BODY_MSGCONTENT = "MsgContent";

    //----------------------------------------------------
    //-------------------MessageContent-------------------

    //---TIMTextElem---
    //文本内容
    public static final String CONTENT_TEXT_TEXT = "text";

    //---TIMLocationElem---
    // 位置名称
    public static final String CONTENT_LOCATION_DESC = "Desc";
    // 纬度
    public static final String CONTENT_LOCATION_LATITUDE = "Latitude";
    // 经度
    public static final String CONTENT_LOCATION_LONGITUDE = "Longitude";

    //---TIMFaceElem---
    // 表情索引， 用户自定义 Number
    public static final String CONTENT_FACE_INDEX = "Index";
    // 额外数据
    public static final String CONTENT_FACE_DATA = "Data";

    //---TIMCustomElem---
    // 自定义消息数据。 不作为 APNs 的 payload 字段下发，故从 payload 中无法获取 Data 字段。
    public static final String CONTENT_CUSTOM_DATA = "Data";
    // 自定义消息描述信息。
    public static final String CONTENT_CUSTOM_DESC = "Desc";
    // 扩展字段。当接收方为 iOS 系统且应用处在后台时，此字段作为 APNs 请求包 Payloads 中的 Ext 键值下发，Ext 的协议格式由业务方确定，APNs 只做透传。
    public static final String CONTENT_CUSTOM_EXT = "Ext";
    // 自定义 APNs 推送铃音
    public static final String CONTENT_CUSTOM_SOUND = "Sound";

    //---TIMSoundElem---
    // 语音下载地址，可通过该 URL 地址直接下载相应语音。
    public static final String CONTENT_SOUND_URL = "Url";
    // 语音数据大小，单位：字节。
    public static final String CONTENT_SOUND_SIZE = "Size";
    // 语音时长，单位：秒。
    public static final String CONTENT_SOUND_SECOND = "Second";
    // 语音下载方式标记。目前 Download_Flag 取值只能为2，表示可通过Url字段值的 URL 地址直接下载语音
    public static final String CONTENT_SOUND_DOWNLOAD_FLAG = "Download_Flag";

    //---TIMImageElem---
    // 图片序列号。后台用于索引图片的键值
    public static final String CONTENT_IMAGE_UUID = "UUID";
    // 图片格式。JPG = 1，GIF = 2，PNG = 3，BMP = 4，其他 = 255
    public static final String CONTENT_IMAGE_IMAGEFORMAT = "ImageFormat";
    // 原图、缩略图或者大图下载信息
    public static final String CONTENT_IMAGE_IMAGEINFOARRAY = "ImageInfoArray";

    //---ImageInfoArray---
    // 图片类型： 1-原图，2-大图，3-缩略图
    public static final String CONTENT_IMAGE_IMAGEINFO_TYPE = "Type";
    // 图片数据大小，单位：字节
    public static final String CONTENT_IMAGE_IMAGEINFO_SIZE = "Size";
    // 图片宽度
    public static final String CONTENT_IMAGE_IMAGEINFO_WIDTH = "Width";
    // 图片高度
    public static final String CONTENT_IMAGE_IMAGEINFO_HEIGHT = "Height";
    // 图片下载地址
    public static final String CONTENT_IMAGE_IMAGEINFO_URL = "URL";

    //---TIMFileElem---
    //文件下载地址，可通过该 URL 地址直接下载相应文件
    public static final String CONTENT_FILE_URL = "Url";
    //文件数据大小，单位：字节
    public static final String CONTENT_FILE_FILESIZE = "FileSize";
    //文件名称
    public static final String CONTENT_FILE_FILENAME = "FileName";
    //文件下载方式标记。目前 Download_Flag 取值只能为2，表示可通过Url字段值的 URL 地址直接下载文件
    public static final String CONTENT_FILE_DOWNLOAD_FLAG = "Download_Flag";

    //---TIMVideoFileElem---
    //视频下载地址。可通过该 URL 地址直接下载相应视频
    public static final String CONTENT_VIDEO_VIDEOURL = "VideoUrl";
    //视频数据大小，单位：字节
    public static final String CONTENT_VIDEO_VIDEOSIZE = "VideoSize";
    //视频时长，单位：秒
    public static final String CONTENT_VIDEO_VIDEOSECOND = "VideoSecond";
    //视频格式，例如 mp4
    public static final String CONTENT_VIDEO_VIDEOFORMAT = "VideoFormat";
    //视频下载方式标记。目前 VideoDownloadFlag 取值只能为2，表示可通过VideoUrl字段值的 URL 地址直接下载视频
    public static final String CONTENT_VIDEO_VIDEODOWNLOADFLAG = "VideoDownloadFlag";
    //视频缩略图下载地址。可通过该 URL 地址直接下载相应视频缩略图
    public static final String CONTENT_VIDEO_THUMBURL = "ThumbUrl";
    //缩略图大小，单位：字节
    public static final String CONTENT_VIDEO_THUMBSIZE = "ThumbSize";
    //缩略图宽度
    public static final String CONTENT_VIDEO_THUMBWIDTH = "ThumbWidth";
    //缩略图高度
    public static final String CONTENT_VIDEO_THUMBHEIGHT = "ThumbHeight";
    //缩略图格式，例如 JPG、BMP 等
    public static final String CONTENT_VIDEO_THUMBFORMAT = "ThumbFormat";
    //视频缩略图下载方式标记。目前 ThumbDownloadFlag 取值只能为2，表示可通过ThumbUrl字段值的 URL 地址直接下载视频缩略图
    public static final String CONTENT_VIDEO_THUMBDOWNLOADFLAG = "ThumbDownloadFlag";

    //-----------------------------------------------------------------------------------------
}
